The invention is applicable to computing environments implementing a component model in which computer program components execute within a specific run-time environment. The run-time environment includes a set of well defined services. In some component architectures, the component management services are implemented within a program construct called a container. The components run within the container, or wherever the services are implemented. A common feature of component architectures is to be able to specify the exact run-time environment required by a component using metadata. This enables the desired run-time environment to be configured without explicit calls to the run-time services having to be programmed within the component code itself. The metadata may be stored in the header of the component or a separate file.
The Enterprise JavaBeans™ (EJB) architecture is an example of a component architecture for the development and deployment of component-based distributed business applications. The EJB specification from Sun Microsystems, Inc (for example, the Enterprise Java Beans Specification version 2.0, final release, published in August 2001, and earlier versions) specifies how developers can develop software components that can be accessed remotely, and how vendors of EJB containers should support those components.
Enterprise beans are server-side software components written in the Java™ programming language, which comply with the EJB specification's server-side component model. Depending on the type of enterprise bean used, capabilities such as persistence, transactions, security and multiple concurrent users can be managed automatically by an EJB container (as described below). This enables the developer of an enterprise bean to rely on an EJB container to provide a number of generic services and to focus their development effort on developing specific business logic. Therefore, the EJB architecture simplifies the task of developing distributed, transactional business applications, and the task of adding new capabilities to such applications.
FIG. 1 is a schematic representation of the architecture of a distributed, client-server application in which the server-side is implemented using EJB technology. A ‘client’ program 10 is running on a client data processing system 20, and sends requests via an EJB container 40 for execution of the methods of an enterprise bean 30 which runs on a server data processing system 50. Although the client program may reside on the same computer as the enterprise bean in non-distributed solutions, in the example of FIG. 1 the client and server data processing systems (20 and 50) are remote from each other. The client program 10 is not limited to a specific type of computer program, and may be another enterprise bean.
The container 40 is a host for enterprise beans and, as mentioned above, provides a variety of generic system services (such as handling remote access, transaction processing, persistence or security) for use by individual enterprise beans 30 at run time. A method call from the client application 10 to a contained enterprise bean 30 is passed through the EJB container 40. The EJB container performs services on-behalf of the targeted enterprise bean and then passes the client's call to the enterprise bean 30. The involvement of the EJB container 40 is transparent to the requesting client program, in the sense that the client program perceives the communication as a direct communication between the client program and the enterprise bean 30. Typically, a container will manage many beans simultaneously. The enterprise beans 30 each implement one or more business-specific methods of a respective application, and each implement methods of the EJB container application programming interface (API) which are required to use the services of the container.
The behaviour of the container is controlled by metadata. In the EJB specification, this metadata is referred to as “deployment descriptors”. Each deployment descriptor instructs the container on how to set up a particular system service in order to provide the correct processing environment for the enterprise bean.
The concept of the deployment descriptor is a powerful one since it reduces the coding required within the component and makes it easier to tailor the component's run-time environment without needing to modify the implementation of the component itself. Consequently, products such as IBM Corporation's WebSphere Application Server Enterprise Edition and BEA's WebLogic Server have added new types of deployment descriptor to control their proprietary services. By using deployment descriptors, these products are able to offer a richer run-time environment to the component than is defined within the EJB specification. WebSphere and IBM are trademarks of International Business Machines Corporation.